package utils

import (
	"crypto/md5"
	"encoding/hex"
	"log"
	"os"
	"os/exec"
	"strings"

	"github.com/atotto/clipboard"
	"github.com/flopp/go-findfont"
)

func Inits() {
	//设置中文字体:解决中文乱码问题
	fontPaths := findfont.List()
	for _, path := range fontPaths {
		if strings.Contains(path, "msyh.ttf") || strings.Contains(path, "simhei.ttf") || strings.Contains(path, "simsun.ttc") || strings.Contains(path, "simkai.ttf") {
			os.Setenv("FYNE_FONT", path)
			break
		}
	}
}

// 打开exe文件
func OpenExe(dir string, file string) {
	// 指定要执行的 .exe 文件路径
	// exePath := "C:\\path\\to\\your\\executable.exe"

	// 创建一个 Cmd 结构体，指定要执行的命令及其参数
	cmd := exec.Command(dir + file)
	// 设置工作目录
	cmd.Dir = dir

	// 可以添加命令参数，例如：
	// cmd.Args = []string{exePath, "arg1", "arg2"}

	// 执行命令并捕获标准输出和标准错误输出
	_, err := cmd.CombinedOutput()
	if err != nil {
		log.Fatalf("Failed to execute command: %v\n", err)
	}
}

// md5加密
func Md5(str string) string {

	// 创建一个 MD5 哈希计算实例
	hasher := md5.New()

	// 将字符串转换为字节切片并写入哈希计算实例
	hasher.Write([]byte(str))

	// 计算并获取哈希值
	hashBytes := hasher.Sum(nil)

	// 将字节切片转换为十六进制字符串
	return hex.EncodeToString(hashBytes)
}

// 复制
func CopyText(value string) {
	// 复制内容到剪切板
	clipboard.WriteAll(value)

	/* // 读取剪切板中的内容到字符串
	content, err := clipboard.ReadAll()
	if err != nil {
		panic(err)
	} */
}
